// 这是一个函数式接口，其函数名为run，返回类型为T
package liming.tool.runnable;

import liming.tool.file.FileRW;
import liming.tool.log.LogPool;

@FunctionalInterface
public interface HaveReturnValueInterface<T> {
    T run() throws Exception;

    default T onException(Exception e) {
        LogPool.log(LogPool.getStackTraceElement(3), FileRW.getStackTrace(e));
        return null;
    }

    /**
     * 任务超时处理，通常用于CodeLock、CodeLockDouble、ThreadPool等场景
     */
    default T onTimeout() {
        LogPool.log(LogPool.getStackTraceElement(3), "运行超时");
        return null;
    }
}